home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagn_r.zip / NUMBERS.SWG / 0046_Reading on bit of an inte.pas < prev    next >
Pascal/Delphi Source File  |  1994-05-25  |  1KB  |  47 lines

  1. {
  2.  SK> 12345 --------------- Longinteger of the value 12345
  3.  SK> ^^^^^
  4.  SK> |||||
  5.  SK> ||||+----------------- Integer value 5
  6.  SK> ||||
  7.  SK> |||+------------------ Integer value 4
  8.  SK> |||
  9.  SK> ||+------------------- Integer value 3
  10.  SK> ||
  11.  SK> |+-------------------- Integer value 2
  12.  SK> |
  13.  SK> +--------------------- Integer value 1
  14.  
  15.  SK> I tried using the procedure of geting the MOD of a number then div the
  16.  SK> number out. It works fine until you get a number like
  17.  SK> 10,100,1000,100000, etc....
  18.  SK> Please help...
  19.  not sure what your asking but have you  can use SHR, SHL, OR ect to fetch
  20.  single bits..........
  21. }
  22. function getbitstate( bitpos:byte; lint:longint):boolean;
  23.  begin
  24.   asm
  25.    mov @result, 00; { clear bolean first }
  26.    cmp bitpos, 16
  27.    jg  @higher;
  28.    mov bx, lint;
  29. @yup:
  30.    test bx, bitpos;
  31.    jnz @yes;
  32.    jmp @done;
  33. @higher:
  34.    mov bx,lint+2;
  35.    jmp @yup;
  36. @yes:
  37.    inc @result, 1;          { adjust bolean return }
  38. @done:
  39.   end;
  40. end;
  41.  
  42. _____ to use it ____
  43.  
  44. Begin
  45.  if getbitstate(8, $80) then Write(' Yup, it's on ');
  46. end;
  47.